| 1 |  |  | /*! | 
            
                                                                                                            
                            
            
                                    
            
            
                | 2 |  |  |  * Copyright (c) 2022 Pedro José Batista, licensed under the MIT License. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 3 |  |  |  * See the LICENSE.md file in the project root for more information. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 4 |  |  |  */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 5 |  |  | /* eslint-disable @typescript-eslint/naming-convention,@typescript-eslint/no-unsafe-argument */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 6 | 1 |  | import Decimal from "decimal.js"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 7 | 1 |  | import Format from "./format"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 8 |  |  | import type { Locale, FormatOptions, Notation, Style } from "./format"; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 9 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 10 | 1 |  | const main = (Decimal: Decimal.Constructor) => { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 11 |  |  |     // Do not attempt to redefine the module, if already extended | 
            
                                                                                                            
                            
            
                                    
            
            
                | 12 | 2 |  |     if (typeof Decimal.Format !== "undefined") { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 13 |  |  |         return; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 14 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 15 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 16 | 1 |  |     Object.defineProperty(Decimal, "Format", { value: Format }); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 17 | 1 |  |     Object.defineProperty(Decimal.prototype, "toLocaleString", { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 18 |  |  |         value: function (this: Decimal.Instance, locales, options) { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 19 | 4 |  |             return new Decimal.Format(locales, options).format(this); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 20 |  |  |         } as typeof Decimal.prototype.toLocaleString, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 21 |  |  |     }); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 22 |  |  | }; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 23 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 24 | 2 |  | main(globalThis.__Decimal__Class__Global__ ?? require("decimal.js")); | 
            
                                                                                                            
                            
            
                                    
            
            
                | 25 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 26 |  |  | declare module "decimal.js" { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 27 |  |  |     export interface Decimal { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 28 |  |  |         /** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 29 |  |  |          * Returns a string with a language-sensitive representation of this decimal number. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 30 |  |  |          * | 
            
                                                                                                            
                            
            
                                    
            
            
                | 31 |  |  |          * @template N Numeric notation of formatting. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 32 |  |  |          * @template S Numeric style of formatting. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 33 |  |  |          * @param locales A string with a [BCP 47](https://www.rfc-editor.org/info/bcp47) language tag, or an | 
            
                                                                                                            
                            
            
                                    
            
            
                | 34 |  |  |          *   array of such strings. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 35 |  |  |          * | 
            
                                                                                                            
                            
            
                                    
            
            
                | 36 |  |  |          *   For the general form and interpretation of this parameter, see the [Intl page on | 
            
                                                                                                            
                            
            
                                    
            
            
                | 37 |  |  |          *   MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl). | 
            
                                                                                                            
                            
            
                                    
            
            
                | 38 |  |  |          * @param options Object used to configure the behavior of the string localization. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 39 |  |  |          * @returns A localized and formatted string. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 40 |  |  |          */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 41 |  |  |         toLocaleString: <N extends Notation = "standard", S extends Style = "decimal">( | 
            
                                                                                                            
                            
            
                                    
            
            
                | 42 |  |  |             locales?: Locale | Locale[], | 
            
                                                                                                            
                            
            
                                    
            
            
                | 43 |  |  |             options?: FormatOptions<N, S>, | 
            
                                                                                                            
                            
            
                                    
            
            
                | 44 |  |  |         ) => string; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 45 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 46 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 47 |  |  |     // In order to appropriately represent the Format class, it needs to be placed on Decimal as a 'static' member: | 
            
                                                                                                            
                            
            
                                    
            
            
                | 48 |  |  |  | 
            
                                                                                                            
                            
            
                                    
            
            
                | 49 |  |  |     // eslint-disable-next-line @typescript-eslint/no-namespace | 
            
                                                                                                            
                            
            
                                    
            
            
                | 50 |  |  |     export namespace Decimal { | 
            
                                                                                                            
                            
            
                                    
            
            
                | 51 |  |  |         /** | 
            
                                                                                                            
                            
            
                                    
            
            
                | 52 |  |  |          * The `Decimal.Format` object enables language-sensitive decimal number formatting. It is entirely | 
            
                                                                                                            
                            
            
                                    
            
            
                | 53 |  |  |          * based on `Intl.NumberFormat`, with the options of the latter being 100% compatible with it. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 54 |  |  |          * | 
            
                                                                                                            
                            
            
                                    
            
            
                | 55 |  |  |          * This class, however, extend the numeric digits constraints of `Intl.NumberFormat` from 21 to | 
            
                                                                                                            
                            
            
                                    
            
            
                | 56 |  |  |          * 1000000000 in order to fully take advantage of the arbitrary-precision of `decimal.js`. | 
            
                                                                                                            
                            
            
                                    
            
            
                | 57 |  |  |          */ | 
            
                                                                                                            
                            
            
                                    
            
            
                | 58 |  |  |         export { Format }; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 59 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 60 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 61 |  |  |  | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 62 |  |  | declare global { | 
            
                                                                        
                            
            
                                    
            
            
                | 63 |  |  |     export class globalThis { | 
            
                                                                        
                            
            
                                    
            
            
                | 64 |  |  |         /** Used by the `extend` submodule to prevent it from loading directly from `decimal.js`. */ | 
            
                                                                        
                            
            
                                    
            
            
                | 65 |  |  |         static __Decimal__Class__Global__: Decimal.Constructor | undefined; | 
            
                                                                                                            
                            
            
                                    
            
            
                | 66 |  |  |     } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 67 |  |  | } | 
            
                                                                                                            
                            
            
                                    
            
            
                | 68 | 1 |  | export { Decimal }; | 
            
                                                                                                            
                                                                
            
                                    
            
            
                | 69 |  |  | export default Decimal; | 
            
                                                        
            
                                    
            
            
                | 70 |  |  |  |